import axios from 'axios';
import router from '../router/index';
import pinia from '../store';
import userStore  from '../store/user'

const store = userStore(pinia)

const http = axios.create({
  baseURL:'/api',//请求地址
  timeout:3000,//响应时间
  withCredentials:true//是否带上token
})


//添加请求拦截
http.interceptors.request.use(
  function (config) {//在请求发生之前
    
    const token = store.$state.token;//从浏览器缓存中获取token，如果没有就为空字符串’‘
    token && (config.headers.token = token)//当token存在且不为空时，设置请求头 Authorization 的值为当前值
    return config
  },
  function (err) { //对发生的错误进行操作
    return Promise.reject(err)  //将错误信息返回，直接让promise的状态进入失败
  }
)

//响应拦截
http.interceptors.response.use(
  
  function (response) { //拦截响应的数据
    sessionStorage.setItem('token',response.data.token)//将拦截到的toke缓存到本地
    if (response.data.code === 401) {//登录过期就重定向到登录页
      router.push('/login')
    }
    console.log('响应拦截', response);
    
    return response
  },
  function(err){
    return Promise.reject(err)//发生错误时直接将错误返回
  }
)

export default http